package workforce.limousine.struts;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;


import limousine.vo.Users;
import limousine.dbservice.UsersService;
import limousine.struts.form.ProfileForm;
import limousine.util.Service;
import limousine.util.Token;
import limousine.util.Func;

public class UsersEdit extends Action {

    private String errorMsg = "Process Fail";
    private Func func = new Func();

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        HttpSession session = request.getSession();
        System.out.println("***UsersEdit");

        Users user = (Users) session.getAttribute(Token.USER_SESSION);
        if (user == null) {
            System.out.println("--SESSION EXPIRE--");
            return mapping.findForward(Token.SESSION_EXPIRE);
        }
        /* if (!user.getRole_name().equals("Admin")) {
        System.out.println("--Not Admin Hack--");
        return mapping.findForward(Token.SESSION_EXPIRE);
        }*/


        //        DataSource ds = this.getDataSource(request, Token.DATASOURCE_NAME);
        Service service = new Service();
        service.setServletContext(this.getServlet().getServletContext());
        DataSource ds = service.getDataSource();
        service.removeMsgAttribute(request, session, "");

        UsersService us = new UsersService();
        us.setDataSource(ds);


        Users o = null;

        ProfileForm f = (ProfileForm) form;

        o = new Users();
        o.setId(f.getId());
        o.setUserName(f.getUserName());
        o.setName(func.protectNullString(f.getName()));
        o.setPhone(func.protectNullString(f.getPhone()));
        o.setGender(f.getGender());        
        o.setEmail(func.protectNullString(f.getEmail()));
        
        o.setPassword(func.protectNullString(f.getPassword()));

        o.setEnable(f.getEnable());
        o.setRoleId(f.getRoleId());
        o.setCreateBy(f.getCreateBy());

        
        //o.setPreviewImage(func.protectNullString(f.getPreviewImage()));


        /*
        //		check systems name exist
        o = us.getByUserName(o.getUserName());
        if (o != null) {//exist
            errorMsg = "This user exist";
            session.setAttribute(Token.MSG_ERROR, errorMsg);
            return mapping.findForward(Token.FAIL);
        }
//		check systems name exist
*/
        if (o.getPassword().length() <= 0) {
            if (us.updateUserInfomationNotChangePassword(o)) {
                session.setAttribute(Token.MSG_USER, Token.MSG_UPDATE_SUCCESS);
                return mapping.findForward(Token.SUCCESS);
            } else {
                session.setAttribute(Token.MSG_ERROR, errorMsg);
                return mapping.findForward(Token.FAIL);
            }
        } else {
            if (us.updateUserInfomation(o)) {
                session.setAttribute(Token.MSG_USER, Token.MSG_UPDATE_SUCCESS);
                return mapping.findForward(Token.SUCCESS);
            } else {
                session.setAttribute(Token.MSG_ERROR, errorMsg);
                return mapping.findForward(Token.FAIL);
            }
        }


    }
}
